#pragma once 

template<class T>
class Test4
{
public:
  Test4(const T& val)
    :_val(val)
  {}
  T Print();  // 声明
  typedef T* iterator;  // 举例
  iterator callcval();
private:
  T _val;
};

//同文件的分离编译
template<class T>
T Test4<T>::Print()
{
  return _val;
}

template<class T>
typename Test4<T>::iterator Test4<T>::callcval()
{
  return &_val;
}
